#include "mainwindow.h"

#include <QApplication>
#include<QMap>
#include<iostream>
#include<QString>
#include<QDebug>
#include<QLinkedList>
using namespace std;
struct Student
{
    string name;
    int age;
};
Q_DECLARE_METATYPE(Student);

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
//    QMap<QString, int> qM1;
//    qM1.insert("xiaoming", 11);
//    qM1.insert("xiaofang", 15);
//    qM1.insert("xiaohong", 20);

    //第一种方法
//    QMapIterator<QString, int> ite(qM1);
//    while(ite.hasNext())
//    {
//        ite.next();
//        qDebug() << ite.key() << ite.value();
//    }

    //第二种方法
//    QMap<QString, int>::iterator it = qM1.begin();
//    for(;it != qM1.end(); it++)
//    {
//        qDebug() << it.key() << it.value() <<endl;
//    }

    //如何对相应的变量进行查询
//    qDebug() << qM1.key(11);
//    qDebug() << qM1.value("xiaofang");

    //如何打印相关的keys和values
//    QList<QString>keys = qM1.keys();
//    QList<int>values = qM1.values();
//    qDebug() << keys <<values << endl;

    //一个键对应多个值
//    QMultiMap<QString, QString> QMultiVar;
//    QMultiVar.insert("name", "xiaofang");
//    QMultiVar.insert("name", "xiaoming");
//    QMultiVar.insert("name", "xiaozhu");
//    QMultiVar.insert("name", "xiaofeng");
//    qDebug() << QMultiVar;

    //QHash
//    QHash<QString, int> qHashVar;
//    qHashVar["xiaofang"] =11;
//    qHashVar["xiaofeng"] =15;
//    qHashVar["xiaozhu"] =11;
//    qHashVar["xiaoming"] =15;
//    QList<QString>HashList = qHashVar.keys();
//    for (int i = 0; i < HashList.length(); i++)
//    {
//        qDebug() << HashList[i] << endl;
//    }

//    QHashIterator<QString, int> qHa(qHashVar);
//    while(qHa.hasNext())
//    {
//        qHa.next();
//        qDebug() << qHa.key() <<qHa.value() << endl;
//    }

//    //QVector
//    QVector<int> qvar;
//    //第一种赋值
//    qvar << 1;
//    qvar << 5;
//    qvar << 9;
//    qDebug() << qvar;

//    //第二种赋值方式
//    qvar.append(15);
//    qvar.append(19);
//    qvar.append(25);
//    qDebug() << qvar.count();
//    qDebug() << qvar.length();
//    qDebug() << qvar;

//    //删除指定的元素
//    qvar.remove(1,2); //从1开始删除指定的个数

    //QLIST类
//    QList<int>qLi;
//    for (int i = 0; i < 10; i++)
//    {
//        qLi.insert(qLi.end(), 10+i);
//    }

//    //读写迭代器
//    qDebug() << qLi;
//    QList<int>::iterator ite = qLi.begin();
//    for(;ite != qLi.end(); ite++)
//    {
//        qDebug() << *ite;
//    }

//    //只读迭代器
//    QList<int>::const_iterator it;
//    for (it = qLi.constBegin(); it != qLi.constEnd(); it++)
//    {
//        qDebug() << *it;
//    }

//    //向qlist添加元素
//    qLi.append(11);
//    qDebug() << qLi;

//    if (qLi.contains(11))
//    {
//        qDebug() << "hello world" << endl;
//    }

//    qLi.removeAt(1);

//    QLinkedList<QString> qLinka;
//    qLinka.append("11");
//    qLinka.append("15");
//    qLinka.append("20");
//    QLinkedList<QString>::ConstIterator ite = qLinka.begin();
//    for (;ite != qLinka.end(); ite++)
//    {
//        qDebug() << *ite;
//    }

//    QVariant q1("hello world");
//    QMap<QString, QVariant> qvar2;
//    qvar2["Color"] =QColor(255,255,255);
//    qDebug() << qvar2["Color"].value<QColor>();

//    //QStringList
//    QStringList qLis1;
//    qLis1 << "hello" << "world" << "xiaoming";

//    QVariant qVar2(qLis1);
//    if (qVar2.type() == QVariant::StringList)
//    {
//        QStringList qList2 = qVar2.toStringList();
//        for(int i = 0; i <qList2.size(); i++)
//        {
//            qDebug() << qList2[i];
//        }
//    }

//    Student studentA;
//    studentA.name = "xiaoming";
//    studentA.age = 15;
//    QVariant var3 = QVariant::fromValue(studentA);
//    Student studentB = var3.value<Student>();
//    std::cout <<studentB.name << endl<< studentB.age << endl;

    double c = -25.52;
    double d = 52.5;
    qSwap(c,d);
    std::cout << c << " " << d << endl;

    return a.exec();
}
